package main

import (
	"encoding/json"
	"flag"
	"fmt"
	"goStudy/candao"
	"io/ioutil"
	"log"
	"os"
	"strings"
)

var (
	help bool //帮助包

	taskIds string //taskId 逗号分割
)

//CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o createtest.exe main.go

func init() {
	flag.BoolVar(&help, "h", false, "帮助包")
	flag.StringVar(&taskIds, "t", "1037", "任务id,逗号分割")

}

func main() {
	var (
		c         *candao.CanDao
		taskIdArr []string
	)
	c = new(candao.CanDao)

	flag.Parse()

	if help {
		flag.VisitAll(func(i *flag.Flag) {
			fmt.Printf("-%s   %s 默认:%s\n", i.Name, i.Usage, i.DefValue)
		})

		return
	}
	taskIdArr = strings.Split(taskIds, ",")
	if len(taskIdArr) == 0 {
		return
	}

	filePath := "./data.json"
	if err := FlashFile2Data(filePath, c); err != nil {
		panic(err)
	}

	for _, v := range taskIdArr {
		if v == "" {
			continue
		}

		if err := c.CreateTest(v); err != nil {
			log.Printf("任务【%s】对应测试单创建失败,错误：%v\n", v, err)
		}
	}

	if err := FlashData2File(filePath, c); err != nil {
		panic(err)
	}

}

//将数据刷入文件
func FlashData2File(filePath string, data interface{}) error {
	//文件不存在创建文件
	if !IsFileExist(filePath) {
		file, err := os.Create(filePath)
		if err != nil {
			return err
		}
		defer file.Close()
	}

	content, err := json.MarshalIndent(data, "", "     ")
	if err != nil {
		return err
	}

	return ioutil.WriteFile(filePath, content, 0644)

}

//将文件数据载入到变量中
func FlashFile2Data(filePath string, data interface{}) error {
	if !IsFileExist(filePath) {
		return nil
	}
	content, err := ioutil.ReadFile(filePath)
	if err != nil {
		return err
	}

	return json.Unmarshal(content, data)
}

//判定文件是否存在
func IsFileExist(filename string) bool {
	if _, err := os.Stat(filename); os.IsNotExist(err) {
		return false
	}
	return true
}
